/**
 * @file tsk_tskp.h
 * @brief tskp库 - 任务调参整体接口头文件
 * @details
 * 本文件声明了tskp任务调参库的整体接口结构体及相关操作接口，包括调度器、解析器、命令存储等模块的统一入口。
 * 适用于嵌入式、实时系统下的远程参数调节、任务调度与命令解析等场景。
 *
 * 作者：小傲（个人开发）
 * 邮箱：2655640770@qq.com
 * 版权声明：开源公开，欢迎建议与反馈
 * 日期：2025-09-11
 */

#ifndef _TSK_TAKP_H_
#define _TSK_TAKP_H_

#include"tsk_misc.h"            //参数

#ifdef _TSK_TSKP_

#include"tsk_cmdstore.h"        //命令存储
#include"tsk_task_queue.h"      //任务队列
#include"tsk_bitmap.h"          //位图          
#include"tsk_task.h"            //调度器
#include"tsk_analy.h"           //解析器


typedef struct{
    tsk_TaskScheduler sched;    //任务调度器
    tsk_analy_t analy;          //任务解析器
}tsk_tskp_t;                    //任务调度和解析器

void tsk_tskp_Init(tsk_tskp_t* tskp);
#if TSK_CMD_SWITCH
void tsk_tskp_add_cmd(tsk_tskp_t* tskp,uint8_t id,const char * cmd);
#endif
tsk_task_enum_t tsk_tskp_register_task(tsk_tskp_t* tskp,
                                uint8_t id,
                                tsk_Func func,
                                void* param,
                                int priority);
void tsk_tskp_start_TaskScheduler(tsk_tskp_t* tskp);
void tsk_tskp_stop_TaskScheduler(tsk_tskp_t* tskp);
void tsk_tskp_free_task(tsk_tskp_t* tskp);
tsk_task_enum_t tsk_tskp_close_task(tsk_tskp_t* tskp,uint8_t id);
tsk_task_enum_t tsk_tskp_stop_task(tsk_tskp_t* tskp,uint8_t id);
tsk_task_enum_t tsk_tskp_start_task(tsk_tskp_t* tskp,uint8_t id);
tsk_task_enum_t tsk_tskp_Run_Priority_TaskScheduler(tsk_tskp_t* tskp,int priority);
tsk_analy_queue_enum_t tsk_tskp_Push(tsk_tskp_t* tskp,char data);
void tsk_task_handler(tsk_tskp_t* tskp);

#endif // _TSK_TSKP_

#endif // !_TSK_TAKP_H_
